In known distributed software applications, software components are distributed among a plurality of executables (i.e., software capsules or software entities). Each of the executables contains one or more software components that perform some portion of the functionality of the distributed software application. The software components often store state information, for example, a checkpoint, to reduce recovery time of a failed or newly initialized software component. In known distributed software applications, the software components individually manage checkpoints and their associated checkpoint procedures. Although software components often share state information between each other, each software component performs checkpointing of its own state information.
As one shortcoming, application developers must add extra software to the software components to perform checkpoint procedures in all execution scenarios. As another shortcoming, the state information that is shared between software components is checkpointed by each software component, which reduces storage efficiency and lowers run-time performance.
Thus, a need exists to alleviate the responsibility of application developers, to promote an increase in storage efficiency of software components of distributed software applications and to promote an increase in performance resulting from the improved storage efficiency.